{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Topic modeling with Latent Dirichlet Allocation (LDA)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Country</th>\n",
       "      <th>Region</th>\n",
       "      <th>Monitor</th>\n",
       "      <th>Year</th>\n",
       "      <th>Month</th>\n",
       "      <th>Day</th>\n",
       "      <th>Preprocessed</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>Niger</td>\n",
       "      <td>Sub-Saharan Africa</td>\n",
       "      <td>Francophonie</td>\n",
       "      <td>1995</td>\n",
       "      <td>1</td>\n",
       "      <td>12</td>\n",
       "      <td>respons request nigerian author twice request ...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>Niger</td>\n",
       "      <td>Sub-Saharan Africa</td>\n",
       "      <td>Francophonie</td>\n",
       "      <td>1995</td>\n",
       "      <td>1</td>\n",
       "      <td>12</td>\n",
       "      <td>part mission observ la francophoni work consul...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>Niger</td>\n",
       "      <td>Sub-Saharan Africa</td>\n",
       "      <td>Francophonie</td>\n",
       "      <td>1995</td>\n",
       "      <td>1</td>\n",
       "      <td>12</td>\n",
       "      <td>poll date poll date initi set decemb postpon t...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>Niger</td>\n",
       "      <td>Sub-Saharan Africa</td>\n",
       "      <td>Francophonie</td>\n",
       "      <td>1995</td>\n",
       "      <td>1</td>\n",
       "      <td>12</td>\n",
       "      <td>nation commiss elect note decemb recept noncon...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>Niger</td>\n",
       "      <td>Sub-Saharan Africa</td>\n",
       "      <td>Francophonie</td>\n",
       "      <td>1995</td>\n",
       "      <td>1</td>\n",
       "      <td>12</td>\n",
       "      <td>access media elect campaign access media seem ...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>Niger</td>\n",
       "      <td>Sub-Saharan Africa</td>\n",
       "      <td>Francophonie</td>\n",
       "      <td>1995</td>\n",
       "      <td>1</td>\n",
       "      <td>12</td>\n",
       "      <td>list elector establish list particularli diffi...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>Niger</td>\n",
       "      <td>Sub-Saharan Africa</td>\n",
       "      <td>Francophonie</td>\n",
       "      <td>1995</td>\n",
       "      <td>1</td>\n",
       "      <td>12</td>\n",
       "      <td>nation elect commiss nation elect commiss orga...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>Niger</td>\n",
       "      <td>Sub-Saharan Africa</td>\n",
       "      <td>Francophonie</td>\n",
       "      <td>1995</td>\n",
       "      <td>1</td>\n",
       "      <td>12</td>\n",
       "      <td>establish poll station interlocutor mission me...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>Niger</td>\n",
       "      <td>Sub-Saharan Africa</td>\n",
       "      <td>Francophonie</td>\n",
       "      <td>1995</td>\n",
       "      <td>1</td>\n",
       "      <td>12</td>\n",
       "      <td>secur condit elector campaign seydou dan jouma...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>Niger</td>\n",
       "      <td>Sub-Saharan Africa</td>\n",
       "      <td>Francophonie</td>\n",
       "      <td>1995</td>\n",
       "      <td>1</td>\n",
       "      <td>12</td>\n",
       "      <td>elector campaign proceed satisfactori manner o...</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "  Country              Region       Monitor  Year  Month  Day  \\\n",
       "0   Niger  Sub-Saharan Africa  Francophonie  1995      1   12   \n",
       "1   Niger  Sub-Saharan Africa  Francophonie  1995      1   12   \n",
       "2   Niger  Sub-Saharan Africa  Francophonie  1995      1   12   \n",
       "3   Niger  Sub-Saharan Africa  Francophonie  1995      1   12   \n",
       "4   Niger  Sub-Saharan Africa  Francophonie  1995      1   12   \n",
       "5   Niger  Sub-Saharan Africa  Francophonie  1995      1   12   \n",
       "6   Niger  Sub-Saharan Africa  Francophonie  1995      1   12   \n",
       "7   Niger  Sub-Saharan Africa  Francophonie  1995      1   12   \n",
       "8   Niger  Sub-Saharan Africa  Francophonie  1995      1   12   \n",
       "9   Niger  Sub-Saharan Africa  Francophonie  1995      1   12   \n",
       "\n",
       "                                        Preprocessed  \n",
       "0  respons request nigerian author twice request ...  \n",
       "1  part mission observ la francophoni work consul...  \n",
       "2  poll date poll date initi set decemb postpon t...  \n",
       "3  nation commiss elect note decemb recept noncon...  \n",
       "4  access media elect campaign access media seem ...  \n",
       "5  list elector establish list particularli diffi...  \n",
       "6  nation elect commiss nation elect commiss orga...  \n",
       "7  establish poll station interlocutor mission me...  \n",
       "8  secur condit elector campaign seydou dan jouma...  \n",
       "9  elector campaign proceed satisfactori manner o...  "
      ]
     },
     "execution_count": 1,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# Load a preprocessed corpus\n",
    "import pandas as pd\n",
    "corpus_path = 'preprocessed_corpus_stemmed.csv'\n",
    "\n",
    "df_corpus = pd.read_csv(corpus_path, na_values='NULL', index_col=0)\n",
    "df_corpus.head(10)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(92927, 7)"
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df_corpus.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "['respons request nigerian author twice request send observ mission earli parliamentari elect presid perman council la francophoni consult member council ask secretari gener agenc cultur technic cooper organ send niger mission accord guidelin set document lay guidelin guid send elect observ mission elect date januari first observ arriv niger januari poll final postpon januari presidenti decre last observ mission left niger januari mission compos two parliamentarian appoint intern assembl french languag parliamentarian aiplf six expert appoint agenc cultur technic cooper acct whose name follow faustin etou wam cameroon deputi chairman law commiss mr xavier deniau franc deputi idrissa traoré burkina faso magistr advoc gener suprem court jean françoi bougon franc magistr counselor court appeal besançon ahm salem ould bouboutt mauritania professor law member constitut council moustapha sourang seneg dean faculti law univers dakar mr matthieu ndikpo mata lamba counselor coordin aiplf bonin coordin acct mission chose idrissa traoré spokesperson faustin etou wam rapporteur jeanfrançoi bougon purpos mission accord guid principl document guid send elect observ mission adopt perman council la francophoni contribut accord nation legisl forc measur transpar sincer vote term refer observ mission result guidelin supplementari direct announc presenc mission prepar elect meet administr polit author countri well use interlocutor ensur good prepar poll b examin condit effect access candid media purpos elector campaign accord elector law forc observ ballot visit largest number poll station b observ follow element locat open close hour poll station condit vote process presenc observ polit parti condit vote count announc first observ mission develop mission report\\n',\n",
       " 'part mission observ la francophoni work consult observ accomplish mission observ abl enjoy greater freedom action met leader main institut person interest elector process involv obtain support observ member mission proceed focus final preparatori phase januari conduct poll oper count januari final transmiss phase calcul public result januari earli gener elect inde organ new elect follow dissolut presid republ octob nation assembl soon nation assembl dissolv parliamentari elect accord articl constitut held within day ie later januari creat order mat dapj sa octob nation commiss elect cne respons materi organ supervis control elect suspect independ nation commiss opposit parti organ refus particip work howev follow compromis enshrin amend decre mat dappj sa novemb appendix xx give greater freedom independ committe abl get work statutori composit pursuant articl elector law presid republ conven elector decemb januari final januari announc presenc mission ensur public action mission announc arriv niger end press releas deliv januari press communiqué describ composit mission object part mauritiu summit declar la francophoni affirm desir continu strengthen rule law support democrat polit civil societi condit sustain develop communiqué read radio televis even januari publish local press extract attach ii prepar elect methodolog mission paid particular attent media print media press televis privileg meet repres main polit parti presid nation elect commiss number diplomat post niger sever person particular mission integr coordin structur overse elect observ process context held sever work meet observ mission present niger observ\\n',\n",
       " 'poll date poll date initi set decemb postpon twice januari take account constitut deadlin set date januari deadlin nation commiss elect composit result consensu put work novemb say month late immedi appear could organ elect date initi fix say day presid republ ask postpon poll date januari decid postpon vote januari\\n',\n",
       " 'nation commiss elect note decemb recept nonconform ballot paper initi order forc place new order date deliveri januari nation commiss elect estim could ensur two day organ rout ballot five thousand poll station spread whole territori seiz presid republ new request postpon vote januari pm nation radio announc date ballot januari interlocutor believ regardless particular circumst mention period provid constitut organ elect short especi case earli parliamentari elect highlight financi difficulti problem relat road infrastructur telecommun insuffici train member poll station also note success postpon poll date sourc fatigu popul final note uncertainti last januari complic task observ mission thu mission sent republ china taiwan present spot sinc januari distribut januari day poll st\\n',\n",
       " 'access media elect campaign access media seem rais major problem candid compet equal access free nation radio televis slot howev case censorship report even intervent parti concern superior council commun censorship measur lift hand allus made likelihood tv commerci particularli long minut made benefit presidenti candid realli paid beneficiari candid\\n']"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# Extraction of preprocessed documents\n",
    "docs = list(df_corpus.Preprocessed)\n",
    "docs[:5]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "92927"
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "len(docs)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<92927x25894 sparse matrix of type '<class 'numpy.int64'>'\n",
       "\twith 7212869 stored elements in Compressed Sparse Row format>"
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# Bag-of-words conversion\n",
    "from sklearn.feature_extraction.text import CountVectorizer\n",
    "\n",
    "vect = CountVectorizer(min_df=5, max_df=0.5)\n",
    "vect.fit(docs)\n",
    "bow = vect.transform(docs)\n",
    "bow"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Vocaburary size: 25894\n",
      "First 20 features:\n",
      "['aa' 'aak' 'aalam' 'aam' 'aaron' 'aat' 'aaujjar' 'ab' 'aba' 'ababa'\n",
      " 'abacha' 'aback' 'abad' 'abaixo' 'abandon' 'abasha' 'abashidz' 'abass'\n",
      " 'abat' 'abb']\n",
      "First 10010 to 10030:\n",
      "['hdz' 'head' 'header' 'headlin' 'headmast' 'headmen' 'headquart'\n",
      " 'headwat' 'headway' 'heal' 'health' 'healthcar' 'healthi' 'hear' 'heard'\n",
      " 'hearsay' 'heart' 'hearten' 'heartfelt' 'heartland']\n",
      "Every 1000th features:\n",
      "['aa' 'amsterdam' 'babrujsk' 'brito' 'chose' 'cordero' 'descrito' 'ecosoc'\n",
      " 'expedient' 'gag' 'hcc' 'inflammatori' 'juraj' 'laureat' 'mannar'\n",
      " 'monarumo' 'noir' 'oye' 'polgári' 'quorum' 'rf' 'senanayak' 'standstil'\n",
      " 'testigo' 'uncov' 'vow']\n"
     ]
    }
   ],
   "source": [
    "# Vocaburary dictionary\n",
    "feature_names = vect.get_feature_names_out()\n",
    "print('Vocaburary size: %i' % len(feature_names))\n",
    "\n",
    "print('First 20 features:')\n",
    "print(feature_names[:20])\n",
    "\n",
    "print('First 10010 to 10030:')\n",
    "print(feature_names[10010:10030])\n",
    "\n",
    "print('Every 1000th features:')\n",
    "print(feature_names[::1000])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<style>#sk-container-id-1 {color: black;}#sk-container-id-1 pre{padding: 0;}#sk-container-id-1 div.sk-toggleable {background-color: white;}#sk-container-id-1 label.sk-toggleable__label {cursor: pointer;display: block;width: 100%;margin-bottom: 0;padding: 0.3em;box-sizing: border-box;text-align: center;}#sk-container-id-1 label.sk-toggleable__label-arrow:before {content: \"▸\";float: left;margin-right: 0.25em;color: #696969;}#sk-container-id-1 label.sk-toggleable__label-arrow:hover:before {color: black;}#sk-container-id-1 div.sk-estimator:hover label.sk-toggleable__label-arrow:before {color: black;}#sk-container-id-1 div.sk-toggleable__content {max-height: 0;max-width: 0;overflow: hidden;text-align: left;background-color: #f0f8ff;}#sk-container-id-1 div.sk-toggleable__content pre {margin: 0.2em;color: black;border-radius: 0.25em;background-color: #f0f8ff;}#sk-container-id-1 input.sk-toggleable__control:checked~div.sk-toggleable__content {max-height: 200px;max-width: 100%;overflow: auto;}#sk-container-id-1 input.sk-toggleable__control:checked~label.sk-toggleable__label-arrow:before {content: \"▾\";}#sk-container-id-1 div.sk-estimator input.sk-toggleable__control:checked~label.sk-toggleable__label {background-color: #d4ebff;}#sk-container-id-1 div.sk-label input.sk-toggleable__control:checked~label.sk-toggleable__label {background-color: #d4ebff;}#sk-container-id-1 input.sk-hidden--visually {border: 0;clip: rect(1px 1px 1px 1px);clip: rect(1px, 1px, 1px, 1px);height: 1px;margin: -1px;overflow: hidden;padding: 0;position: absolute;width: 1px;}#sk-container-id-1 div.sk-estimator {font-family: monospace;background-color: #f0f8ff;border: 1px dotted black;border-radius: 0.25em;box-sizing: border-box;margin-bottom: 0.5em;}#sk-container-id-1 div.sk-estimator:hover {background-color: #d4ebff;}#sk-container-id-1 div.sk-parallel-item::after {content: \"\";width: 100%;border-bottom: 1px solid gray;flex-grow: 1;}#sk-container-id-1 div.sk-label:hover label.sk-toggleable__label {background-color: #d4ebff;}#sk-container-id-1 div.sk-serial::before {content: \"\";position: absolute;border-left: 1px solid gray;box-sizing: border-box;top: 0;bottom: 0;left: 50%;z-index: 0;}#sk-container-id-1 div.sk-serial {display: flex;flex-direction: column;align-items: center;background-color: white;padding-right: 0.2em;padding-left: 0.2em;position: relative;}#sk-container-id-1 div.sk-item {position: relative;z-index: 1;}#sk-container-id-1 div.sk-parallel {display: flex;align-items: stretch;justify-content: center;background-color: white;position: relative;}#sk-container-id-1 div.sk-item::before, #sk-container-id-1 div.sk-parallel-item::before {content: \"\";position: absolute;border-left: 1px solid gray;box-sizing: border-box;top: 0;bottom: 0;left: 50%;z-index: -1;}#sk-container-id-1 div.sk-parallel-item {display: flex;flex-direction: column;z-index: 1;position: relative;background-color: white;}#sk-container-id-1 div.sk-parallel-item:first-child::after {align-self: flex-end;width: 50%;}#sk-container-id-1 div.sk-parallel-item:last-child::after {align-self: flex-start;width: 50%;}#sk-container-id-1 div.sk-parallel-item:only-child::after {width: 0;}#sk-container-id-1 div.sk-dashed-wrapped {border: 1px dashed gray;margin: 0 0.4em 0.5em 0.4em;box-sizing: border-box;padding-bottom: 0.4em;background-color: white;}#sk-container-id-1 div.sk-label label {font-family: monospace;font-weight: bold;display: inline-block;line-height: 1.2em;}#sk-container-id-1 div.sk-label-container {text-align: center;}#sk-container-id-1 div.sk-container {/* jupyter's `normalize.less` sets `[hidden] { display: none; }` but bootstrap.min.css set `[hidden] { display: none !important; }` so we also need the `!important` here to be able to override the default hidden behavior on the sphinx rendered scikit-learn.org. See: https://github.com/scikit-learn/scikit-learn/issues/21755 */display: inline-block !important;position: relative;}#sk-container-id-1 div.sk-text-repr-fallback {display: none;}</style><div id=\"sk-container-id-1\" class=\"sk-top-container\"><div class=\"sk-text-repr-fallback\"><pre>LatentDirichletAllocation(max_iter=25, n_components=20, n_jobs=-1)</pre><b>In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook. <br />On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.</b></div><div class=\"sk-container\" hidden><div class=\"sk-item\"><div class=\"sk-estimator sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-1\" type=\"checkbox\" checked><label for=\"sk-estimator-id-1\" class=\"sk-toggleable__label sk-toggleable__label-arrow\">LatentDirichletAllocation</label><div class=\"sk-toggleable__content\"><pre>LatentDirichletAllocation(max_iter=25, n_components=20, n_jobs=-1)</pre></div></div></div></div></div>"
      ],
      "text/plain": [
       "LatentDirichletAllocation(max_iter=25, n_components=20, n_jobs=-1)"
      ]
     },
     "execution_count": 11,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# Train a LDA model with a designated number of topics\n",
    "from sklearn.decomposition import LatentDirichletAllocation\n",
    "\n",
    "n_topics = 20\n",
    "lda = LatentDirichletAllocation(n_components=n_topics, learning_method='batch', max_iter=25, n_jobs=-1)\n",
    "lda.fit(bow)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Document-topic matrix\n",
      "(92927, 20)\n",
      "[[2.13675219e-04 1.50411934e-02 2.13675219e-04 2.13675218e-04\n",
      "  2.13675219e-04 2.13675219e-04 4.09570543e-02 2.13675215e-04\n",
      "  2.13675220e-04 1.29657357e-01 2.25001208e-02 1.27303708e-02\n",
      "  1.31140562e-01 3.89521235e-02 2.13675215e-04 2.13675219e-04\n",
      "  5.95582567e-01 2.13675217e-04 1.10882235e-02 2.13675219e-04]\n",
      " [2.95572984e-01 2.19298251e-04 7.81872556e-02 2.19298252e-04\n",
      "  7.07991126e-02 2.19298251e-04 2.42308915e-02 2.19298251e-04\n",
      "  2.19298248e-04 2.19298252e-04 2.19298250e-04 2.19298253e-04\n",
      "  1.58377155e-01 2.19298251e-04 2.19298248e-04 2.19298250e-04\n",
      "  2.95159559e-01 2.19298249e-04 7.48221655e-02 2.19298250e-04]\n",
      " [1.68248463e-01 1.00000002e-03 1.00000001e-03 1.00000003e-03\n",
      "  1.00000001e-03 1.00000001e-03 1.00000001e-03 1.00000000e-03\n",
      "  1.00000001e-03 1.48291777e-01 1.06815542e-01 1.00000000e-03\n",
      "  5.60644218e-01 1.00000002e-03 1.00000000e-03 1.00000001e-03\n",
      "  1.00000002e-03 1.00000002e-03 1.00000002e-03 1.00000002e-03]\n",
      " [3.54181070e-01 4.50450458e-04 4.50450462e-04 4.50450464e-04\n",
      "  5.94391049e-02 4.50450461e-04 4.50450463e-04 1.30164163e-02\n",
      "  4.50450463e-04 2.96946805e-01 4.50450460e-04 4.50450452e-04\n",
      "  1.66257941e-01 4.50450463e-04 4.50450451e-04 4.50450462e-04\n",
      "  1.03852356e-01 4.50450465e-04 4.50450461e-04 4.50450463e-04]\n",
      " [3.29365474e-01 1.00000001e-03 4.64783175e-02 1.00000001e-03\n",
      "  6.07156208e-01 1.00000001e-03 1.00000002e-03 1.00000000e-03\n",
      "  1.00000001e-03 1.00000002e-03 1.00000003e-03 1.00000002e-03\n",
      "  1.00000002e-03 1.00000003e-03 1.00000001e-03 1.00000003e-03\n",
      "  1.00000001e-03 1.00000002e-03 1.00000003e-03 1.00000001e-03]\n",
      " [3.27290039e-01 4.27350433e-04 4.27350439e-04 4.27350443e-04\n",
      "  4.27350438e-04 4.27350433e-04 4.27350435e-04 2.14901450e-02\n",
      "  7.36632906e-02 4.27350441e-04 4.27350439e-04 4.27350430e-04\n",
      "  2.90556191e-02 4.27350439e-04 4.27350429e-04 4.27350436e-04\n",
      "  4.27350436e-04 5.03923434e-01 3.85945659e-02 4.27350434e-04]\n",
      " [1.56831801e-01 8.62068982e-04 8.62068993e-04 1.00192309e-01\n",
      "  4.58113078e-02 8.62068984e-04 8.62068982e-04 8.62068976e-04\n",
      "  8.62068982e-04 8.62068989e-04 8.62068990e-04 8.62068966e-04\n",
      "  4.97032514e-01 1.01009551e-01 8.62068966e-04 8.62068995e-04\n",
      "  8.62068993e-04 8.62068982e-04 8.70535524e-02 8.62068985e-04]\n",
      " [1.03805950e-01 1.66666668e-03 1.66666671e-03 1.66666675e-03\n",
      "  1.66666672e-03 1.66666676e-03 1.66666669e-03 1.66666667e-03\n",
      "  3.34254693e-01 5.33606022e-01 1.66666686e-03 1.66666667e-03\n",
      "  1.66666669e-03 1.66666678e-03 1.66666667e-03 1.66666673e-03\n",
      "  1.66666669e-03 1.66666673e-03 1.66666669e-03 1.66666681e-03]\n",
      " [4.55678033e-01 1.42857146e-03 1.42857146e-03 1.42857144e-03\n",
      "  1.42857149e-03 1.42857144e-03 1.42857144e-03 1.42857147e-03\n",
      "  9.31868849e-02 1.42857146e-03 1.42857145e-03 6.07068835e-02\n",
      "  1.42857145e-03 1.42857146e-03 1.42857143e-03 2.79120538e-01\n",
      "  8.98790882e-02 1.42857144e-03 1.42857147e-03 1.42857144e-03]\n",
      " [3.00639944e-01 9.80392171e-04 9.80392177e-04 9.80392163e-04\n",
      "  4.01009565e-01 9.80392184e-04 9.80392185e-04 9.80392171e-04\n",
      "  3.17332538e-02 9.80392174e-04 9.80392172e-04 9.80392158e-04\n",
      "  9.80392189e-04 9.80392181e-04 9.80392159e-04 8.18479991e-02\n",
      "  9.80392171e-04 9.80392166e-04 1.70063356e-01 9.80392167e-04]]\n",
      "\n",
      "Topic-token matrix\n",
      "(20, 25894)\n",
      "[[33.37213339  0.05        0.05       ...  0.05        0.05\n",
      "   6.04999998]\n",
      " [ 0.05        0.05        0.05       ...  0.05        0.05\n",
      "   0.05      ]\n",
      " [ 0.05        0.05        0.05       ...  0.05        0.05\n",
      "   0.05      ]\n",
      " ...\n",
      " [ 0.05        0.05        0.05       ...  0.05        0.05\n",
      "   0.05      ]\n",
      " [ 0.05        0.05        0.05       ...  0.05        0.05\n",
      "   0.05      ]\n",
      " [ 0.05        0.05       21.70182611 ...  0.05        0.05\n",
      "   0.05      ]]\n"
     ]
    }
   ],
   "source": [
    "# Document-topic matrix and topic-token matrix\n",
    "document_topic = lda.transform(bow)\n",
    "topic_token = lda.components_\n",
    "\n",
    "print('Document-topic matrix')\n",
    "print(document_topic.shape)\n",
    "print(document_topic[:10])\n",
    "print()\n",
    "\n",
    "print('Topic-token matrix')\n",
    "print(topic_token.shape)\n",
    "print(topic_token)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "topic 0: round elector eu observ first eom result second process presidenti ceni mission final vote candid countri day poll two organ\n",
      "topic 1: observ intern process deleg nation elector group organ polit ndi societi civil countri mission conduct monitor govern deploy domest democrat\n",
      "topic 2: elector mission process polit observ vote oa organ gener tse nation parti system municip citizen member author inform countri carri\n",
      "topic 3: member commiss appoint administr cec parti repres local nomin offic district chairperson bodi level polit commission deputi session train ukrain\n",
      "topic 4: media coverag broadcast campaign radio candid tv televis public polit monitor inform news parti privat channel provid advertis newspap time\n",
      "topic 5: observ osc parliamentari mission democrat deleg intern european parliament europ assembl state odihr head eom deploy report council assess day\n",
      "topic 6: right women law articl state polit human freedom intern particip constitut person paragraph equal code public see elector parti citizen\n",
      "topic 7: center carter state cne human right particip offic democrat assist osc program observ provid intern institut machin unit activ includ\n",
      "topic 8: minor constitu nation ethnic popul report state commiss feder commun region area languag russian european sudan includ eu boundari north\n",
      "topic 9: poll station vote observ ballot result voter count process day procedur number offici case report open agent center box materi\n",
      "topic 10: court complaint appeal decis case candid result file elector day law suprem constitut legal violat challeng rule reject disput cec\n",
      "topic 11: de le da la et du eleitor serbia em com do kabila os en que dan est un vote pour\n",
      "topic 12: constitut seat parti presid law candid elector nation vote presidenti assembl parliament legisl member two constitu parliamentari system amend polit\n",
      "topic 13: elector process polit parti law legal public campaign recommend transpar provid ensur includ framework voter regul administr conduct commiss requir\n",
      "topic 14: de la el en lo que del para por se elector con un partido su al una nacion como electoral\n",
      "topic 15: campaign candid parti polit report public state use fund day support violenc activ financ offici also polic period ralli resourc\n",
      "topic 16: mr mission committe observ presid deleg meet member minist head ad hoc bv repres francophoni gener secretari nation annex republ\n",
      "topic 17: voter list regist registr candid vote number citizen parti women card day resid requir elector person includ total data one\n",
      "topic 18: parti polit govern democrat presid opposit new nation countri peopl leader support would presidenti forc coalit allianc independ power movement\n",
      "topic 19: per cent cec observ pec vote voter dec protocol day number station eom signatur candid poll report tec result case\n"
     ]
    }
   ],
   "source": [
    "# This displays the most relevant words for each topic.\n",
    "import numpy as np\n",
    "\n",
    "n_words = 20 # Specify the maximum number of words to be displayed\n",
    "n_topics = topic_token.shape[0]\n",
    "\n",
    "# Get the word list\n",
    "feature_names = np.array(vect.get_feature_names_out())\n",
    "\n",
    "# This sorts, for each topic, words in the order of relevance for the topic.\n",
    "sorting = np.argsort(topic_token, axis=1)[:, ::-1]\n",
    "\n",
    "for i in range(n_topics):\n",
    "    words = ' '.join(feature_names[sorting[i]][:n_words])\n",
    "    print('topic %i: %s' % (i, words))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "credibl elect mark crucial stage tunisian democraci despit modest mobil certain technic weak preliminari statement european union elect observ mission eu eom present complet elector process essenti step remain accomplish includ announc result handl litig eu eom abl comment observ made far process subsequ issu final report includ full process analysi recommend futur elect eu eom may also make subsequ statement progress ongo process deem appropri\n",
      "\n",
      "\n",
      "secur elect strategi secur elector process decid late ceni govern inde sever hesit creation presidenti elect secur unit usep interven septemb exact definit mission notabl secur deploy elector materi day vote central result never clearli commun author concern howev eu eom welcom rapid establish usep establish nearli peopl work done elect follow day help maintain atmospher rel calm elector process\n",
      "\n",
      "\n",
      "second round presidenti elect novemb occas second round presidenti elect eu eom conduct limit observ vote oper support particip still import nation level poll novemb conduct peac without seriou incid deplor nation territori despit mani difficulti procrastin crise mark prepar mani month ceni met challeng organ technic credibl ballot\n",
      "\n",
      "\n",
      "press releas press releas european union elector observ mission madagascar present first conclus observ second round presidenti elect antananarivo decemb european union elector observ mission eu eom madagascar today present press confer preliminari statement observ second round presidenti elect novemb first conclus relat analysi period two round hold second round elect campaign environ legal framework perform independ nation elector commiss ndant ceni role media civil societi well nation observ preliminari statement pay particular attent conduct second round elect day observ european observ throughout malagasi territori occas chief observ cristian preda underlin second round presidenti elect decemb character peac particip malagasi elector gener improv ballot preda remind two finalist candid import welcom provision result second round presidenti elect calmli calmli mission call use legal channel avail main conclus european union elect observ mission stage\n",
      "\n",
      "\n",
      "result presidenti elect final result first round presidenti elect final result first round presidenti elect candid final result second round presidenti elect final result second round presidenti elect candid comparison result two round region\n",
      "\n",
      "\n"
     ]
    }
   ],
   "source": [
    "# This shows the most 'representative' reviews for the specified topic.\n",
    "topic = 0 # Specify a topic number\n",
    "n_docs = 5 # Specify the maximum number of reviews \n",
    "\n",
    "indices = np.argsort(document_topic[:, topic])[::-1]\n",
    "for i in indices[:n_docs]:\n",
    "    print(df_corpus.iloc[i].Preprocessed[:2000])\n",
    "    print()\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(20.39, -1.3900000000000001)"
      ]
     },
     "execution_count": 20,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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B0grfCIiIiJmToFPRERExMwp8ImIiIiYOQU+ERERETOnwCciIiJi5hT4RERERMycAp+IiIiImVPgK4DBYGDLli3FXcZtJScnYzAYiImJKe5SREREpAR7rAPf/v376dixI5UrV35sQtqD5ObmRmpqKnXr1r3jMWFhYfj7+z+8okRERKTEeawDX2ZmJvXr12fBggXFXcp9uX79+j2NK1WqFC4uLpQu/eh/MOVeaxYREZFH77EOfO3bt2fKlCl07tz5rsYtWrSIWrVqUbZsWby8vFi5cmW+PqmpqbRv3x4rKytq1KjB+vXrjfuuXbvG4MGDcXV1pVy5cri7uzNt2jTj/rS0NAYOHIizszP29va0bt2a48ePG/fnrbItXbqUmjVrYmlpyeLFi6lSpQo5OTkmdTz//PP07du3wPO49ZZuZGQkBoOB3bt3ExgYiLW1NU2aNCE+Ph6A5cuXEx4ezvHjxzEYDBgMBpYvX37PNefm5mIwGPjPf/7DCy+8gLW1NbVr12br1q1FXv+srCzS09NNNhEREXl4HuvAdy82b97M0KFDGTlyJCdPnuTVV1+lX79+7N2716Tf+PHj6dKlC8ePH+fll1/mpZdeIi4uDoD58+ezdetW1q1bR3x8PKtWrcLd3R2A3NxcgoODuXDhAhEREURHRxMQEECbNm24fPmycf4zZ86wbt06Nm7cSExMDF27duWXX34xqeO3335jx44d9OrV667O8e2332b27NlERUVRunRp+vfvD0D37t0ZOXIkvr6+pKamkpqaSvfu3e+55jzh4eF069aNEydO0KFDB3r16mUy7lbTpk3DwcHBuLm5ud3V+YmIiMjd+dsFvlmzZhEaGsobb7yBp6cnI0aMoHPnzsyaNcuk34svvsgrr7yCp6cnkydPJjAwkA8++ACAlJQUateuTbNmzahevTrNmjXjpZdeAmDv3r3Exsayfv16AgMDqV27NrNmzcLR0ZENGzYY57927RorV66kQYMG+Pn54eTkRLt27fjkk0+MfdavX0+FChVo06bNXZ3j1KlTadGiBT4+Prz11lscPHiQq1evYmVlha2tLaVLl8bFxQUXFxesrKzuuWaDwQBAaGgoL730Eh4eHrz77rtkZmby7bffFlrfuHHjSEtLM25nz569q/MTERGRu/O3C3xxcXE0bdrUpK1p06bG1bs8jRs3zvc5r09o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tLQ043b27Nki+4uIiMj9ue8VvrJly+Lh4QFAYGAgR44cYd68eSxevLjQMXm3AvMYDIYC23JycoCbK3eurq5ERkbmm+uvz5nd7bxFyVvNy8nJoWHDhqxevTpfn4oVKxr/bGNjc9s5raysCt1X2K3U3NxcYy1w7+f41z558xXUVti1CQsLo2fPnnz++ed88cUXTJw4kbVr1/LCCy/wyiuv0LZtWz7//HO+/PJLpk2bxuzZs3nzzTcLnMvS0tK4UisiIiIP3wP/Hr7c3FyysrIe6JwBAQFcuHCB0qVL4+HhYbI98cQT9z3/rc/0HT582HjrMiAggISEBJydnfMd28HB4a6O4+fnx+7duwvc5+Pjw40bN/jmm2+Mbb/++ivff/893t7ed3lGD4enpyfDhw/nyy+/pHPnzixbtsy4z83Njddee41NmzYxcuRIlixZUoyVioiIyF/dV+D717/+xVdffUVycjKxsbG8/fbbREZG0qtXrwdVHwBBQUE0btyYkJAQduzYQXJyMgcPHuSdd94xebP0Xq1fv56lS5fy/fffM3HiRL799lsGDx4M3HxZ4YknnqBTp0589dVXJCUlsW/fPoYOHcq5c+fu6jgTJ05kzZo1TJw4kbi4OGJjY5k5cyZw85m4Tp06MWDAAA4cOGB8gaRKlSp06tTpvs/xfvz5558MHjyYyMhIfvzxR77++muOHDliDKLDhg1jx44dJCUlcfToUfbs2VNiQqqIiIjcZ+D7+eef6d27N15eXrRp04ZvvvmG7du388wzzzyo+oCbtxsjIiJo3rw5/fv3x9PTkx49epCcnGx89ux+hIeHs3btWvz8/FixYgWrV682vnhibW3N/v37qVatGp07d8bb25v+/fvz559/Ym9vf1fHadmyJevXr2fr1q34+/vTunVrkxW9ZcuW0bBhQ5577jkaN25Mbm4uERER+W7ZPmqlSpXi119/pU+fPnh6etKtWzfat29vfPEiOzubQYMG4e3tTbt27fDy8mLhwoXFWrOIiIj8H0NuYQ+PiTwi6enpODg44DZsHRaW1sVdjpQQydODi7sEEZESL+//0LS0tCIXov72v6UrIiIiYu4U+ERERETMnAKfiIiIiJlT4BMRERExcwp8IiIiImZOgU9ERETEzN33T6uJPCgnw9ve9XcbioiIyO1phU9ERETEzCnwiYiIiJg5BT4R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9Nit8OWFvYSEBHbt2oWTk1OR/e3s7HB3d2f37t0F7vfx8SElJYWzZ88a206fPk1aWhre3t53XJfBYKBp06aEh4dz7NgxypYty+bNmwEoW7Ys2dnZRY4vW7YsQL5+FStWNHkeLj09naSkJJM+ZcqUue38APb29nTv3p0lS5bw6aefsnHjRi5fvkxAQAAXLlygdOnSeHh4mGxPPPEEAF999RWhoaG88MIL1KtXDxcXF5KTk/Odw53UISIiIo9WiQp8GRkZxMTEGL+MOCkpiZiYGONtwxs3btC1a1eioqJYvXo12dnZXLhwgQsXLhS50hQWFsbs2bOZP38+CQkJHD16lA8++ACAoKAg/Pz86NWrF0ePHuXbb7+lT58+tGjRgsDAwDuq+5tvvuHdd98lKiqKlJQUNm3axKVLl4yB0d3dnRMnThAfH88vv/xS4Apd9erVMRgMbNu2jUuXLpGRkQFA69atWblyJV999RUnT56kb9++lCpVymRsXqC9cOFCobeS33//fdauXct3333H999/z/r163FxccHR0ZGgoCAaN25MSEgIO3bsIDk5mYMHD/LOO+8QFRUFgIeHB5s2bSImJobjx4/Ts2dP4wrnX+vYv38/P/30E7/88ssdXTsRERF5+EpU4IuKiqJBgwY0aNAAgBEjRtCgQQMmTJgAwLlz59i6dSvnzp3D398fV1dX43bw4MFC5+3bty9z585l4cKF+Pr68txzz5GQkAD835cWly9fnubNmxMUFETNmjX59NNP77hue3t79u/fT4cOHfD09OSdd95h9uzZtG/fHoABAwbg5eVFYGAgFStW5Ouvv843R5UqVQgPD+ett96iUqVKxq+NGTduHM2bN+e5556jQ4cOhISEUKtWLZOxs2fPZufOnbi5uRmv3a1sbW2ZMWMGgYGBNGrUiOTkZCIiIrCwsMBgMBAREUHz5s3p378/np6e9OjRg+TkZCpVqgTcDIzly5enSZMmdOzYkbZt2xIQEGByjEmTJpGcnEytWrWML5OIiIhI8TPk3vqAmMgjlp6efvPrWYatw8LSurjLEflbSJ4eXNwliMgDkPd/aFpaWpHvNJSoFT4RERERefAU+ERERETMnAKfiIiIiJlT4BMRERExcwp8IiIiImbusfylDTFPJ8Pb6mfWREREHgKt8ImIiIiYOQU+ERERETOnwCciIiJi5hT4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",
      "text/plain": [
       "<Figure size 600x900 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# This plots the overall prevalence of each topic\n",
    "# in the entire corpus in the form of bar chart.\n",
    "import matplotlib.pyplot as plt\n",
    "%matplotlib inline\n",
    "\n",
    "topic_means = np.mean(document_topic, axis=0)\n",
    "topic_labels = []\n",
    "for i in range(n_topics):\n",
    "    indices = sorting[i, :2]\n",
    "    label = '%i %s %s' % (i, feature_names[indices[0]], feature_names[indices[1]])\n",
    "    topic_labels.append(label)\n",
    "\n",
    "plt.figure(figsize=(6, 9))\n",
    "plt.barh(np.arange(n_topics), topic_means)\n",
    "plt.yticks(np.arange(n_topics), topic_labels)\n",
    "plt.ylim(plt.ylim()[::-1])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "anaconda-cloud": {},
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.11.4"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
